package com.ruoyi.swPro.swPro.mapper;

import java.util.List;
import com.ruoyi.swPro.swPro.domain.SwPro;
import com.ruoyi.swPro.swPro.domain.SwProTemplatefile;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;

/**
 * sw产品Mapper接口
 * 
 * @author ruoyi
 * @date 2025-04-12
 */
public interface SwProMapper 
{
    /**
     * 查询sw产品
     * 
     * @param id sw产品主键
     * @return sw产品
     */
    public SwPro selectSwProById(Long id);

    /**
     * 查询sw产品列表
     * 
     * @param swPro sw产品
     * @return sw产品集合
     */
    public List<SwPro> selectSwProList(SwPro swPro);

    /**
     * 新增sw产品
     * 
     * @param swPro sw产品
     * @return 结果
     */
    public int insertSwPro(SwPro swPro);

    /**
     * 修改sw产品
     * 
     * @param swPro sw产品
     * @return 结果
     */
    public int updateSwPro(SwPro swPro);

    /**
     * 删除sw产品
     * 
     * @param id sw产品主键
     * @return 结果
     */
    public int deleteSwProById(Long id);

    /**
     * 批量删除sw产品
     * 
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteSwProByIds(Long[] ids);

    /**
     * 批量删除sw产品和模板中间
     * 
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteSwProTemplatefileBySwProIds(Long[] ids);
    
    /**
     * 批量新增sw产品和模板中间
     * 
     * @param swProTemplatefileList sw产品和模板中间列表
     * @return 结果
     */
    public int batchSwProTemplatefile(List<SwProTemplatefile> swProTemplatefileList);
    

    /**
     * 通过sw产品主键删除sw产品和模板中间信息
     * 
     * @param id sw产品ID
     * @return 结果
     */
    public int deleteSwProTemplatefileBySwProId(Long id);

    @Select("SELECT * FROM sw_pro_templatefile WHERE sw_pro_id = #{id};")
    @Results({
            @Result(property = "swProId", column = "sw_pro_id"),
            @Result(property = "templateId", column = "template_id")
    })
    List<SwProTemplatefile> getTemplateFileListById(Long id);
}
